package com.punch.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.punch.common.dto.system.area.AreaDTO;
import com.punch.common.vo.system.area.AppAreaVO;
import com.punch.common.vo.system.area.TreeAreaVO;
import com.punch.system.model.SysNationArea;

import java.util.List;

/**
 * <p>
 * 全国地区表 服务类
 * </p>
 *
 * @author wjj
 * @since 2020-12-04
 */
public interface NationAreaService extends IService<SysNationArea> {

    /**
     * 地区树形-pc端,地区管理
     *
     * @param parentId 地区父id,默认为0
     * @return List<TreeAreaVO>
     * @author wujj
     * @since 2020/6/4 19:16
     */
    List<TreeAreaVO> treeArea(Integer parentId);

    /**
     * 地区树形（根据状态查询）
     *
     * @param status   状态 0-停用 1-启用
     * @param parentId 父节点id
     * @return List<TreeAreaVO>
     * @author wujj
     * @since 2020/6/4 19:16
     */
    List<TreeAreaVO> treeAreaStatus(Integer status, Integer parentId, Integer type);

    /**
     * 新增地区
     *
     * @param areaDTO 地区新增表单
     * @return areaId
     * @author wujj
     * @since 2020/6/4 19:33
     */
    Integer saveArea(AreaDTO areaDTO);

    /**
     * 修改地区
     *
     * @param areaDTO 地区更新表单
     * @return areaId
     * @author wujj
     * @since 2020/6/4 19:46
     */
    Integer updateArea(AreaDTO areaDTO);

    /**
     * 删除地区
     *
     * @param areaId 地区id
     * @return areaId
     * @author wujj
     * @since 2020/6/4 19:54
     */
    Integer deleteArea(Integer areaId);

    /**
     * 地区信息
     *
     * @param areaId 地区id
     * @return TreeAreaVO
     * @author wujj
     * @since 2020/6/4 19:16
     */
    TreeAreaVO getFeignArea(Integer areaId);

    /**
     * 查找该地区id下的子id
     *
     * @param parentId 地区父id
     * @return List<Long>
     * @author wujj
     * @since 2020/6/4 19:16
     */
    List<Integer> listFeignChildId(Integer parentId);

    /**
     * 地区启用/停用
     */
    void enableArea(Integer areaId);

    /**
     * app端地区
     *
     * @param parentId 地区父id,默认为0
     * @return List<TreeAreaVO>
     * @author wujj
     * @since 2020/6/4 19:16
     */
    List<AppAreaVO> appArea(Integer parentId);

    /**
     * 获取父ids
     *
     * @param areaId 地区id
     * @return string
     */
    String getParentIds(Integer areaId);
}
